////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//  Filename:    LionsLairGuts.h                                              //
//  Developer:   George Chapman                                               //
//  Create date: 06/02/2005                                                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//  Description: This is the class definition for the slot gut for the        //
//               Australian Slot machine called Lion's Lair.                  //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
//        Copyright (c) 2005 - Realtime Gaming.  All rights reserved.         //
////////////////////////////////////////////////////////////////////////////////

#ifndef LIONSLAIRGUTS_H
#define LIONSLAIRGUTS_H

////////////////////////////////////
// Include Files                  //
////////////////////////////////////
#include "slotguts.h"
#include "getrand.h"

class LionsLairGuts : public SlotGuts
{

    // Shared enums between client and server
    #include "LionsLairCommon.h"

	public:
		LionsLairGuts();			  // Default Constructor
		virtual ~LionsLairGuts();  // Destructor

        // Overrides of virtual functions from SlotsGuts.
		virtual void  classifyStops(SpinLine* spinline, uint8* stops,uint8 bet, uint8 line, uint8& rtnresult, uint8& multiplier);
		virtual void  classifyScatters(SlotSpin *spin);
        virtual bool8 isValidGuts();
        virtual void  getGameModeMultiplierAndNoteId( uint8& nGameModeMultiplier, uint8& nNoteId );
		virtual bool8 processClientData(uint8 bonusGameType, int32 bonusDataCount, int32 *bonusData);

	protected:

		virtual void  setFeatureGameMultiplier(int32 nFeatureGameMultiplier);
		virtual int32 getFeatureGameMultiplier() const;
		virtual void  setSelectFeatureGameMultiplier(int32 bSelectMultiplier);
		virtual int32 getSelectFeatureGameMultiplier() const;
		virtual void  setFeatureTriggerCount(int32 nFeatureTriggerCount);
		virtual int32 getFeatureTriggerCount() const;
		virtual void  incrementFeatureTriggerCount();
		virtual void  decrementFeatureTriggerCount();
		virtual void  setFeatureMultiplierChosenMask(int32 nFeatureMultiplierChosenMask);
		virtual int32 getFeatureMultiplierChosenMask() const;
		virtual int32 getNumMultipliersChosen() const;		
		void		  initializeFeatureGame();

		bool8 canProcessClientData() const;

		static  int32 ms_multipliers[NUM_FEATURE_MULTIPLIERS];

		virtual void preSpinClassifyResults(SlotSpin *spin);
        virtual void  postSpinClassifyResults(SlotSpin *spin);

};
#endif //[#ifdef LIONSLAIRGUTS_H]